home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer: Getting Started / Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin / pc / mac / bonus / peter_le / finger-1 / my_units / myaddres.uni next >
Text File  |  1992-02-24  |  4KB  |  217 lines

  1. unit MyAddressInput;
  2.  
  3. { This code is part of the Finger/Fingerd source code, written in THINK Pascal 4 }
  4. { Copyright 1991-1992 Peter N Lewis }
  5. { If you use this code, you must give me credit in your about box and documentation }
  6. { This is part of my generic library of routines }
  7.  
  8. interface
  9.  
  10.     uses
  11.         OOMainLoop;
  12.  
  13.     const
  14.         ai_ok = 1;
  15.         ai_cancel = 2;
  16.         ai_setdefault = 3;
  17.         ai_user = 4;
  18.         ai_machine = 5;
  19.         ai_user_item = 6;
  20.  
  21.     var
  22.         default_user, default_machine: str255;
  23.  
  24.     type
  25.         AIObject = object(DTObject)
  26.                 okon, setdefon: boolean;
  27.                 procedure Create (id: integer);
  28.                 override;
  29.                 procedure DoItem (item: integer);
  30.                 override;
  31.                 procedure DoKey (modifiers: integer; ch: char; code: integer);
  32.                 override;
  33.                 procedure DoEditMenu (item: integer);
  34.                 override;
  35.                 procedure SetOK;
  36.                 procedure GetDialog;
  37.                 procedure SetDialog;
  38.                 procedure PackStringBlank (var s: str255);
  39.                 procedure PackString (var s: str255);
  40.                 procedure UnPackString (s: str255);
  41.                 function IsOKOn: boolean;
  42.                 function IsSetDefaultOn: boolean;
  43.                 procedure DoCommand (s: str255);
  44.             end;
  45.  
  46.     procedure InitAddressInput;
  47.  
  48. implementation
  49.  
  50.     uses
  51.         BaseGlobals, AppGlobals, MyTypes, MyUtils, MyTEUtils, MyPreferences;
  52.  
  53.     var
  54.         first: boolean;
  55.  
  56.     procedure InitAddressInput;
  57.     begin
  58.         first := true;
  59.     end;
  60.  
  61.     procedure MyOutlineDefault (dp: dialogPtr; item: integer);
  62.         var
  63.             kind: integer;
  64.             h: handle;
  65.             r: rect;
  66.             fi: AIObject;
  67.     begin
  68.         fi := AIObject(GetWObject(dp));
  69.         GetDItem(dp, fi.ok_item, kind, h, r);
  70.         PenSize(3, 3);
  71.         InsetRect(r, -4, -4);
  72.         if not ControlEnabled(dp, fi.ok_item) then begin
  73.             PenPat(gray);
  74.             FrameRoundRect(r, 16, 16);
  75.             PenPat(black);
  76.         end
  77.         else
  78.             FrameRoundRect(r, 16, 16);
  79.     end;
  80.  
  81.     procedure AIObject.SetOK;
  82.         var
  83.             nsetdefon: boolean;
  84.     begin
  85.         if okon <> IsOKOn then begin
  86.             okon := not okon;
  87.             HiliteItem(window, ai_ok, okon);
  88.             SetPort(window);
  89.             MyOutlineDefault(window, ai_user_item);
  90.         end;
  91.         if setdefon <> IsSetDefaultOn then begin
  92.             setdefon := not setdefon;
  93.             HiliteItem(window, ai_setdefault, setdefon);
  94.         end;
  95.     end;
  96.  
  97.     procedure AIObject.SetDialog;
  98.     begin
  99.         SetItemText(window, ai_user, default_user);
  100.         SelIText(window, ai_user, 0, maxInt);
  101.         SetItemText(window, ai_machine, default_machine);
  102.     end;
  103.  
  104.     procedure AIObject.GetDialog;
  105.     begin
  106.         GetItemText(window, ai_user, default_user);
  107.         GetItemText(window, ai_machine, default_machine);
  108.     end;
  109.  
  110.     procedure SetDefaultString (s: str255);
  111.     begin
  112.         SetPrefsResource('STR ', defaultStrResID, handle(NewString(s)));
  113.     end;
  114.  
  115.     procedure GetDefaultString (var s: str255);
  116.         var
  117.             h: handle;
  118.             rn: integer;
  119.     begin
  120.         rn := GetPrefsResource('STR ', defaultStrResID, h);
  121.         s := stringHandle(h)^^;
  122.         if rn <> -1 then
  123.             CloseResFile(rn);
  124.     end;
  125.  
  126.     procedure AIObject.Create (id: integer);
  127.         var
  128.             kind: integer;
  129.             h: handle;
  130.             r: rect;
  131.             s: str255;
  132.     begin
  133.         inherited Create(id);
  134.         okon := true;
  135.         setdefon := true;
  136.         ok_item := ai_ok;
  137.         cancel_item := ai_cancel;
  138.         GetDItem(window, ai_ok, kind, h, r);
  139.         InsetRect(r, -10, -10);
  140.         SetDItem(window, ai_user_item, userItem, handle(@MyOutlineDefault), r);
  141.         if first then begin
  142.             first := false;
  143.             GetDefaultString(s);
  144.             UnpackString(s);
  145.         end;
  146.         SetDialog;
  147.         SetOK;
  148.     end;
  149.  
  150.     procedure AIObject.DoItem (item: integer);
  151.         var
  152.             s: str255;
  153.     begin
  154.         case item of
  155.             ai_cancel, ai_ok, ai_setdefault:  begin
  156.                 if item <> ai_cancel then begin
  157.                     GetDialog;
  158.                     if item = ai_setdefault then begin
  159.                         PackStringBlank(s);
  160.                         SetDefaultString(s);
  161.                         PackString(s);
  162.                         if s = '?' then begin
  163.                             Destroy;
  164.                             ShowCursor;
  165.                             exit(DoItem);
  166.                         end;
  167.                     end
  168.                     else
  169.                         PackString(s);
  170.                     DoCommand(s);
  171.                 end;
  172.                 Destroy;
  173.                 ShowCursor;
  174.             end;
  175.             otherwise
  176.                 ;
  177.         end;
  178.     end;
  179.  
  180.     procedure AIObject.DoKey (modifiers: integer; ch: char; code: integer);
  181.     begin
  182.         SetOK;
  183.     end;
  184.  
  185.     procedure AIObject.DoEditMenu (item: integer);
  186.         var
  187.             modified: boolean;
  188.     begin
  189.         inherited DoEditMenu(item);
  190.         SetOK;
  191.     end;
  192.  
  193.     procedure AIObject.PackStringBlank (var s: str255);
  194.     begin
  195.     end;
  196.  
  197.     procedure AIObject.PackString (var s: str255);
  198.     begin
  199.     end;
  200.  
  201.     procedure AIObject.UnPackString (s: str255);
  202.     begin
  203.     end;
  204.  
  205.     function AIObject.IsOKOn: boolean;
  206.     begin
  207.     end;
  208.  
  209.     function AIObject.IsSetDefaultOn: boolean;
  210.     begin
  211.     end;
  212.  
  213.     procedure AIObject.DoCommand (s: str255);
  214.     begin
  215.     end;
  216.  
  217. end.